/**
 *  编写代码，移除未排序链表中的重复节点。保留最开始出现的节点。
 * 输入：[1, 2, 3, 1, 2, 3]
    输出：[1, 2, 3]
 */


const Node = require('../../单链表/node')
// set哈希表去重
var removeDuplicateNodes = function(head) {
    if(head === null) return null
    if(head.next === null) return head
    const set = new Set()
    set.add(head.data)
    let prev = head
    let cur = head.next
    while(cur) {
        // 重复了
        if(set.has(cur.data)) {
            prev.next = cur.next
            cur = cur.next
        } 
        // 没重复
        else {
            set.add(cur.data)
            prev = cur
            cur = cur.next
        }
    }
    return head
};

// 双指针去重
// 固定一个指针，另一个指针p遍历，p.next遇到和固定指针值相同的就删除